home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / latex209 / contrib / ieee / ieee.bst < prev    next >
Text File  |  1993-08-02  |  18KB  |  1,004 lines

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  IEEE.bst  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % Bibliography Syle file for articles according to IEEE instructions
  3. % balemi@aut.ee.ethz.ch     <22-JUN-93>
  4. % modified from unsrt.bib. Contributions by Richard H. Roy
  5.  
  6. ENTRY
  7.   { address
  8.     author
  9.     booktitle
  10.     chapter
  11.     edition
  12.     editor
  13.     howpublished
  14.     institution
  15.     journal
  16.     key
  17.     month
  18.     note
  19.     number
  20.     organization
  21.     pages
  22.     publisher
  23.     school
  24.     series
  25.     title
  26.     type
  27.     volume
  28.     year
  29.   }
  30.   {}
  31.   { label }
  32.  
  33. INTEGERS { output.state before.all mid.sentence after.sentence after.block }
  34.  
  35. FUNCTION {init.state.consts}
  36. { #0 'before.all :=
  37.   #1 'mid.sentence :=
  38.   #2 'after.sentence :=
  39.   #3 'after.block :=
  40. }
  41.  
  42. STRINGS { s t }
  43.  
  44. FUNCTION {output.nonnull}
  45. { 's :=
  46.   output.state mid.sentence =
  47.     { ", " * write$ }
  48.     { output.state after.block =
  49. % next line commented out by rhr and changed to write comma
  50. %    { add.period$ write$
  51.     { ", " * write$ 
  52.       newline$
  53.       "\newblock " write$
  54.     }
  55.     { output.state before.all =
  56.         'write$
  57.         { add.period$ " " * write$ }
  58.       if$
  59.     }
  60.       if$
  61.       mid.sentence 'output.state :=
  62.     }
  63.   if$
  64.   s
  65. }
  66.  
  67. FUNCTION {output}
  68. { duplicate$ empty$
  69.     'pop$
  70.     'output.nonnull
  71.   if$
  72. }
  73.  
  74. FUNCTION {output.check}
  75. { 't :=
  76.   duplicate$ empty$
  77.     { pop$ "empty " t * " in " * cite$ * warning$ }
  78.     'output.nonnull
  79.   if$
  80. }
  81.  
  82. FUNCTION {output.bibitem}
  83. { newline$
  84.   "\bibitem{" write$
  85.   cite$ write$
  86.   "}" write$
  87.   newline$
  88.   ""
  89.   before.all 'output.state :=
  90. }
  91.  
  92. FUNCTION {fin.entry}
  93. { add.period$
  94.   write$
  95.   newline$
  96. }
  97.  
  98. % 5/24/89 rhr
  99. %  modified fin.entry function - prints note field after body of entry  
  100. %FUNCTION {fin.entry}
  101. %{ add.period$
  102. %  note empty$
  103. %    'write$
  104. %    { "\par\bgroup\parindent=0em  " * annote * "\par\egroup " * write$
  105. %    }
  106. %  if$
  107. %  newline$
  108. %}
  109.  
  110. FUNCTION {new.block}
  111. { output.state before.all =
  112.     'skip$
  113.     { after.block 'output.state := }
  114.   if$
  115. }
  116.  
  117. FUNCTION {new.sentence}
  118. { output.state after.block =
  119.     'skip$
  120.     { output.state before.all =
  121.     'skip$
  122.     { after.sentence 'output.state := }
  123.       if$
  124.     }
  125.   if$
  126. }
  127.  
  128. FUNCTION {not}
  129. {   { #0 }
  130.     { #1 }
  131.   if$
  132. }
  133.  
  134. FUNCTION {and}
  135. {   'skip$
  136.     { pop$ #0 }
  137.   if$
  138. }
  139.  
  140. FUNCTION {or}
  141. {   { pop$ #1 }
  142.     'skip$
  143.   if$
  144. }
  145.  
  146. FUNCTION {new.block.checka}
  147. { empty$
  148.     'skip$
  149.     'new.block
  150.   if$
  151. }
  152.  
  153. FUNCTION {new.block.checkb}
  154. { empty$
  155.   swap$ empty$
  156.   and
  157.     'skip$
  158.     'new.block
  159.   if$
  160. }
  161.  
  162. FUNCTION {new.sentence.checka}
  163. { empty$
  164.     'skip$
  165.     'new.sentence
  166.   if$
  167. }
  168.  
  169. FUNCTION {new.sentence.checkb}
  170. { empty$
  171.   swap$ empty$
  172.   and
  173.     'skip$
  174.     'new.sentence
  175.   if$
  176. }
  177.  
  178. FUNCTION {field.or.null}
  179. { duplicate$ empty$
  180.     { pop$ "" }
  181.     'skip$
  182.   if$
  183. }
  184.  
  185. FUNCTION {emphasize}
  186. { duplicate$ empty$
  187.     { pop$ "" }
  188.     { "{\em " swap$ * "}" * }
  189.   if$
  190. }
  191.  
  192. FUNCTION {boldface}
  193. { duplicate$ empty$
  194.     { pop$ "" }
  195.     { "{\bf " swap$ * "}" * }
  196.   if$
  197. }
  198.  
  199. %FUNCTION {boldface}
  200. %{ 's swap$ :=
  201. %  s "" =
  202. %    { "" }
  203. %    { "{\bf " s * "}" * }
  204. %  if$
  205. %}
  206. %
  207. INTEGERS { nameptr namesleft numnames }
  208.  
  209. FUNCTION {format.names}
  210. { 's :=
  211.   #1 'nameptr :=
  212.   s num.names$ 'numnames :=
  213.   numnames 'namesleft :=
  214.     { namesleft #0 > }
  215.     { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
  216.       nameptr #1 >
  217.     { namesleft #1 >
  218.         { ", " * t * }
  219.         { numnames #2 >
  220.         { "," * }
  221.         'skip$
  222.           if$
  223.           t "others" =
  224.         { " et~al." * }
  225.         { " and " * t * }
  226.           if$
  227.         }
  228.       if$
  229.     }
  230.     't
  231.       if$
  232.       nameptr #1 + 'nameptr :=
  233.       namesleft #1 - 'namesleft :=
  234.     }
  235.   while$
  236. }
  237.  
  238. FUNCTION {format.authors}
  239. { author empty$
  240.     { "" }
  241.     { author format.names }
  242.   if$
  243. }
  244.  
  245. FUNCTION {format.editors}
  246. { editor empty$
  247.     { "" }
  248.     { editor format.names
  249.       editor num.names$ #1 >
  250.     { ", Eds." * }
  251.     { ", Ed." * }
  252.       if$
  253.     }
  254.   if$
  255. }
  256.  
  257. FUNCTION {format.title}
  258. { title empty$
  259.     { "" }
  260.     { "``" title "t" change.case$ * }
  261.   if$
  262. }
  263.  
  264. FUNCTION {n.dashify}
  265. { 't :=
  266.   ""
  267.     { t empty$ not }
  268.     { t #1 #1 substring$ "-" =
  269.     { t #1 #2 substring$ "--" = not
  270.         { "--" *
  271.           t #2 global.max$ substring$ 't :=
  272.         }
  273.         {   { t #1 #1 substring$ "-" = }
  274.         { "-" *
  275.           t #2 global.max$ substring$ 't :=
  276.         }
  277.           while$
  278.         }
  279.       if$
  280.     }
  281.     { t #1 #1 substring$ *
  282.       t #2 global.max$ substring$ 't :=
  283.     }
  284.       if$
  285.     }
  286.   while$
  287. }
  288.  
  289. FUNCTION {format.date}
  290. { year empty$
  291.     { month empty$
  292.     { "" }
  293.     { "there's a month but no year in " cite$ * warning$
  294.       month
  295.     }
  296.       if$
  297.     }
  298.     { month empty$
  299.     'year
  300.     { month " " * year * }
  301.       if$
  302.     }
  303.   if$
  304. }
  305.  
  306. % FUNCTION {format.date}
  307. % { year empty$
  308. %     'year 
  309. %     { " "  year * }
  310. %   if$
  311. % }
  312.  
  313. FUNCTION {format.btitle}
  314. { title emphasize
  315. }
  316.  
  317. FUNCTION {tie.or.space.connect}
  318. { duplicate$ text.length$ #3 <
  319.     { "~" }
  320.     { " " }
  321.   if$
  322.   swap$ * *
  323. }
  324.  
  325. FUNCTION {either.or.check}
  326. { empty$
  327.     'pop$
  328.     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  329.   if$
  330. }
  331.  
  332. FUNCTION {format.bvolume}
  333. { volume empty$
  334.     { "" }
  335.     { "vol." volume tie.or.space.connect
  336.       series empty$
  337.     'skip$
  338.     { " of " * series emphasize * }
  339.       if$
  340.       "volume and number" number either.or.check
  341.     }
  342.   if$
  343. }
  344.  
  345. FUNCTION {format.number.series}
  346. { volume empty$
  347.     { number empty$
  348.     { series field.or.null }
  349.     { output.state mid.sentence =
  350.         { "number" }
  351.         { "Number" }
  352.       if$
  353.       number tie.or.space.connect
  354.       series empty$
  355.         { "there's a number but no series in " cite$ * warning$ }
  356.         { " in " * series * }
  357.       if$
  358.     }
  359.       if$
  360.     }
  361.     { "" }
  362.   if$
  363. }
  364.  
  365. FUNCTION {format.edition}
  366. { edition empty$
  367.     { "" }
  368.     { output.state mid.sentence =
  369.     { edition "l" change.case$ " edition" * }
  370.     { edition "t" change.case$ " edition" * }
  371.       if$
  372.     }
  373.   if$
  374. }
  375.  
  376. INTEGERS { multiresult }
  377.  
  378. FUNCTION {multi.page.check}
  379. { 't :=
  380.   #0 'multiresult :=
  381.     { multiresult not
  382.       t empty$ not
  383.       and
  384.     }
  385.     { t #1 #1 substring$
  386.       duplicate$ "-" =
  387.       swap$ duplicate$ "," =
  388.       swap$ "+" =
  389.       or or
  390.     { #1 'multiresult := }
  391.     { t #2 global.max$ substring$ 't := }
  392.       if$
  393.     }
  394.   while$
  395.   multiresult
  396. }
  397.  
  398. FUNCTION {format.pages}
  399. { pages empty$
  400.     { "" }
  401.     { pages multi.page.check
  402.     { "pp." pages n.dashify tie.or.space.connect }
  403.     { "p." pages tie.or.space.connect }
  404.       if$
  405.     }
  406.   if$
  407. }
  408.  
  409. FUNCTION {format.vol.num.pages}
  410. volume empty$
  411.    {"" }
  412.    {"vol. " volume *}
  413. if$
  414. number empty$
  415.    'skip$
  416.    {", no. " number * *}
  417. if$
  418. pages empty$
  419.    'skip$
  420.     { duplicate$ empty$
  421.     { pop$ format.pages }
  422.     { ", pp. " * pages n.dashify * }
  423.       if$
  424.     }
  425. if$
  426. }
  427.  
  428. %FUNCTION {format.vol.num.pages}
  429. %%boldface added 3/17/87 rhr
  430. %{ volume field.or.null boldface
  431. %  number empty$
  432. %    'skip$
  433. %    { "(" number * ")" * *
  434. %      volume empty$
  435. %    { "there's a number but no volume in " cite$ * warning$ }
  436. %    'skip$
  437. %      if$
  438. %    }
  439. %  if$
  440. %  pages empty$
  441. %    'skip$
  442. %    { duplicate$ empty$
  443. %    { pop$ format.pages }
  444. %    { ":" * pages n.dashify * }
  445. %      if$
  446. %    }
  447. %  if$
  448. %}
  449.  
  450. FUNCTION {format.chapter.pages}
  451. { chapter empty$
  452.     'format.pages
  453.     { type empty$
  454.     { "chapter" }
  455.     { type "l" change.case$ }
  456.       if$
  457.       chapter tie.or.space.connect
  458.       pages empty$
  459.     'skip$
  460.     { ", " * format.pages * }
  461.       if$
  462.     }
  463.   if$
  464. }
  465.  
  466. FUNCTION {format.in.ed.booktitle}
  467. { booktitle empty$
  468.     { "" }
  469.     { editor empty$
  470.     { "in " booktitle emphasize * }
  471.     { "in "  booktitle emphasize *  ", " * format.editors * }
  472.       if$
  473.     }
  474.   if$
  475. }
  476.  
  477. FUNCTION {empty.misc.check}
  478. { author empty$ title empty$ howpublished empty$
  479.   month empty$ year empty$ note empty$
  480.   and and and and and
  481.     { "all relevant fields are empty in " cite$ * warning$ }
  482.     'skip$
  483.   if$
  484. }
  485.  
  486. FUNCTION {format.thesis.type}
  487. { type empty$
  488.     'skip$
  489.     { pop$
  490.       type "t" change.case$
  491.     }
  492.   if$
  493. }
  494.  
  495. FUNCTION {format.tr.number}
  496. { type empty$
  497.     { "Tech. {R}ep." }
  498.     'type
  499.   if$
  500.   number empty$
  501.     { "t" change.case$ }
  502.     { number tie.or.space.connect }
  503.   if$
  504. }
  505.  
  506. FUNCTION {format.article.crossref}
  507. { key empty$
  508.     { journal empty$
  509.     { "need key or journal for " cite$ * " to crossref " * crossref *
  510.       warning$
  511.       ""
  512.     }
  513.     { "In {\em " journal * "\/}" * }
  514.       if$
  515.     }
  516.     { "In " key * }
  517.   if$
  518.   " \cite{" * crossref * "}" *
  519. }
  520.  
  521. FUNCTION {format.crossref.editor}
  522. { editor #1 "{vv~}{ll}" format.name$
  523.   editor num.names$ duplicate$
  524.   #2 >
  525.     { pop$ " et~al." * }
  526.     { #2 <
  527.     'skip$
  528.     { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  529.         { " et~al." * }
  530.         { " and " * editor #2 "{vv~}{ll}" format.name$ * }
  531.       if$
  532.     }
  533.       if$
  534.     }
  535.   if$
  536. }
  537.  
  538. FUNCTION {format.book.crossref}
  539. { volume empty$
  540.     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  541.       "In "
  542.     }
  543.     { "vol." volume tie.or.space.connect
  544.       " of " *
  545.     }
  546.   if$
  547.   editor empty$
  548.   editor field.or.null author field.or.null =
  549.   or
  550.     { key empty$
  551.     { series empty$
  552.         { "need editor, key, or series for " cite$ * " to crossref " *
  553.           crossref * warning$
  554.           "" *
  555.         }
  556.         { "{\em " * series * "\/}" * }
  557.       if$
  558.     }
  559.     { key * }
  560.       if$
  561.     }
  562.     { format.crossref.editor * }
  563.   if$
  564.   " \cite{" * crossref * "}" *
  565. }
  566.  
  567. FUNCTION {format.incoll.inproc.crossref}
  568. { editor empty$
  569.   editor field.or.null author field.or.null =
  570.   or
  571.     { key empty$
  572.     { booktitle empty$
  573.         { "need editor, key, or booktitle for " cite$ * " to crossref " *
  574.           crossref * warning$
  575.           ""
  576.         }
  577.         { "In {\em " booktitle * "\/}" * }
  578.       if$
  579.     }
  580.     { "In " key * }
  581.       if$
  582.     }
  583.     { "In " format.crossref.editor * }
  584.   if$
  585.   " \cite{" * crossref * "}" *
  586. }
  587.  
  588. FUNCTION {article}
  589. { output.bibitem
  590.   format.authors "author" output.check
  591.   new.block
  592.  format.title "''" * "title"   output.check
  593.   new.block
  594.   crossref missing$
  595.     { journal emphasize "journal" output.check
  596.       format.vol.num.pages output
  597.       format.date "year" output.check
  598.     }
  599.     { format.article.crossref output.nonnull
  600.       format.pages output
  601.     }
  602.   if$
  603.   new.block
  604.   note output
  605.   fin.entry
  606. }
  607.  
  608. FUNCTION {book}
  609. { output.bibitem
  610.   author empty$
  611.     { format.editors "author and editor" output.check }
  612.     { format.authors output.nonnull
  613.       crossref missing$
  614.     { "author and editor" editor either.or.check }
  615.     'skip$
  616.       if$
  617.     }
  618.   if$
  619.   new.block
  620.   format.btitle "title" output.check
  621.   crossref missing$
  622.     { format.bvolume output
  623.       new.block
  624.       format.number.series output
  625.       new.sentence
  626.       publisher "publisher" output.check
  627.       address output
  628.     }
  629.     { new.block
  630.       format.book.crossref output.nonnull
  631.     }
  632.   if$
  633.   format.edition output
  634.   format.date "year" output.check
  635.   new.block
  636.   note output
  637.   fin.entry
  638. }
  639.  
  640. FUNCTION {booklet}
  641. { output.bibitem
  642.   format.authors output
  643.   new.block
  644.   format.title "''" * "title" output.check
  645.   howpublished address new.block.checkb
  646.   howpublished output
  647.   address output
  648.   format.date output
  649.   new.block
  650.   note output
  651.   fin.entry
  652. }
  653.  
  654. FUNCTION {inbook}
  655. { output.bibitem
  656.   author empty$
  657.     { format.editors "author and editor" output.check }
  658.     { format.authors output.nonnull
  659.       crossref missing$
  660.     { "author and editor" editor either.or.check }
  661.     'skip$
  662.       if$
  663.     }
  664.   if$
  665.   new.block
  666.   format.btitle "title" output.check
  667.   crossref missing$
  668.     { format.bvolume output
  669.       format.chapter.pages "chapter and pages" output.check
  670.       new.block
  671.       format.number.series output
  672.       new.sentence
  673.       publisher "publisher" output.check
  674.       address output
  675.     }
  676.     { format.chapter.pages "chapter and pages" output.check
  677.       new.block
  678.       format.book.crossref output.nonnull
  679.     }
  680.   if$
  681.   format.edition output
  682.   format.date "year" output.check
  683.   new.block
  684.   note output
  685.   fin.entry
  686. }
  687.  
  688. FUNCTION {incollection}
  689. { output.bibitem
  690.   format.authors "author" output.check
  691.   new.block
  692.   format.title "''" * "title" output.check
  693.   new.block
  694.   crossref missing$
  695.     { format.in.ed.booktitle "booktitle" output.check
  696.       format.bvolume output
  697.       format.number.series output
  698.       format.chapter.pages output
  699.       new.sentence
  700.       publisher "publisher" output.check
  701.       address output
  702.       format.edition output
  703.       format.date "year" output.check
  704.     }
  705.     { format.incoll.inproc.crossref output.nonnull
  706.       format.chapter.pages output
  707.     }
  708.   if$
  709.   new.block
  710.   note output
  711.   fin.entry
  712. }
  713.  
  714. FUNCTION {inproceedings}
  715. { output.bibitem
  716.   format.authors "author" output.check
  717.   new.block
  718.   format.title "''" * "title" output.check
  719.   new.block
  720.   crossref missing$
  721.     { format.in.ed.booktitle "booktitle" output.check
  722.       address empty$
  723.     { organization publisher new.sentence.checkb
  724.       organization output
  725.       format.date "year" output.check
  726.     }
  727.     { address output.nonnull
  728.       format.date "year" output.check
  729.       organization output
  730.     }
  731.       if$
  732.       format.bvolume output
  733.       format.number.series output
  734.       format.pages output
  735.       publisher output
  736.     }
  737.     { format.incoll.inproc.crossref output.nonnull
  738.       format.pages output
  739.     }
  740.   if$
  741.   new.block
  742.   note output
  743.   fin.entry
  744. }
  745.  
  746. FUNCTION {conference} { inproceedings }
  747.  
  748. FUNCTION {manual}
  749. { output.bibitem
  750.   author empty$
  751.     { organization empty$
  752.     'skip$
  753.     { organization output.nonnull
  754.       address output
  755.     }
  756.       if$
  757.     }
  758.     { format.authors output.nonnull }
  759.   if$
  760.   new.block
  761.   format.btitle "title" output.check
  762.   author empty$
  763.     { organization empty$
  764.     { address new.block.checka
  765.       address output
  766.     }
  767.     'skip$
  768.       if$
  769.     }
  770.     { organization address new.block.checkb
  771.       organization output
  772.       address output
  773.     }
  774.   if$
  775.   format.edition output
  776.   format.date output
  777.   new.block
  778.   note output
  779.   fin.entry
  780. }
  781.  
  782. FUNCTION {mastersthesis}
  783. { output.bibitem
  784.   format.authors "author" output.check
  785.   new.block
  786.   format.title "''" * "title" output.check
  787.   new.block
  788.   "Master's thesis" format.thesis.type output.nonnull
  789.   school "school" output.check
  790.   address output
  791.   format.date "year" output.check
  792.   new.block
  793.   note output
  794.   fin.entry
  795. }
  796.  
  797. FUNCTION {misc}
  798. { output.bibitem
  799.   format.authors output
  800.   title howpublished new.block.checkb
  801.   format.title "''" * output
  802.   howpublished new.block.checka
  803.   howpublished output
  804.   format.date output
  805.   new.block
  806.   note output
  807.   fin.entry
  808.   empty.misc.check
  809. }
  810.  
  811. FUNCTION {phdthesis}
  812. { output.bibitem
  813.   format.authors "author" output.check
  814.   new.block
  815.   format.btitle "title" output.check
  816.   new.block
  817.   "PhD thesis" format.thesis.type output.nonnull
  818.   school "school" output.check
  819.   address output
  820.   format.date "year" output.check
  821.   new.block
  822.   note output
  823.   fin.entry
  824. }
  825.  
  826. FUNCTION {proceedings}
  827. { output.bibitem
  828.   editor empty$
  829.     { organization output }
  830.     { format.editors output.nonnull }
  831.   if$
  832.   new.block
  833.   format.btitle "title" output.check
  834.   format.bvolume output
  835.   format.number.series output
  836.   address empty$
  837.     { editor empty$
  838.     { publisher new.sentence.checka }
  839.     { organization publisher new.sentence.checkb
  840.       organization output
  841.     }
  842.       if$
  843.       publisher output
  844.       format.date "year" output.check
  845.     }
  846.     { address output.nonnull
  847.       format.date "year" output.check
  848.       new.sentence
  849.       editor empty$
  850.     'skip$
  851.     { organization output }
  852.       if$
  853.       publisher output
  854.     }
  855.   if$
  856.   new.block
  857.   note output
  858.   fin.entry
  859. }
  860.  
  861. FUNCTION {techreport}
  862. { output.bibitem
  863.   format.authors "author" output.check
  864.   new.block
  865.   format.title "''" * "title" output.check
  866.   new.block
  867.   format.tr.number output.nonnull
  868.   institution "institution" output.check
  869.   address output
  870.   format.date "year" output.check
  871.   new.block
  872.   note output
  873.   fin.entry
  874. }
  875.  
  876. FUNCTION {unpublished}
  877. { output.bibitem
  878.   format.authors "author" output.check
  879.   new.block
  880.   format.title "''" * "title" output.check
  881.   new.block
  882.   note "note" output.check
  883.   format.date output
  884.   fin.entry
  885. }
  886.  
  887. FUNCTION {default.type} { misc }
  888.  
  889. MACRO {jan} {"Jan."}
  890.  
  891. MACRO {feb} {"Feb."}
  892.  
  893. MACRO {mar} {"Mar."}
  894.  
  895. MACRO {apr} {"Apr."}
  896.  
  897. MACRO {may} {"May"}
  898.  
  899. MACRO {jun} {"June"}
  900.  
  901. MACRO {jul} {"July"}
  902.  
  903. MACRO {aug} {"Aug."}
  904.  
  905. MACRO {sep} {"Sept."}
  906.  
  907. MACRO {oct} {"Oct."}
  908.  
  909. MACRO {nov} {"Nov."}
  910.  
  911. MACRO {dec} {"Dec."}
  912.  
  913. MACRO {acmcs} {"ACM Computing Surveys"}
  914.  
  915. MACRO {acta} {"Acta Informatica"}
  916.  
  917. MACRO {cacm} {"Communications of the ACM"}
  918.  
  919. MACRO {ibmjrd} {"IBM Journal of Research and Development"}
  920.  
  921. MACRO {ibmsj} {"IBM Systems Journal"}
  922.  
  923. MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
  924.  
  925. MACRO {ieeetc} {"IEEE Transactions on Computers"}
  926.  
  927. MACRO {ieeetcad}
  928.  {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
  929.  
  930. MACRO {ipl} {"Information Processing Letters"}
  931.  
  932. MACRO {jacm} {"Journal of the ACM"}
  933.  
  934. MACRO {jcss} {"Journal of Computer and System Sciences"}
  935.  
  936. MACRO {scp} {"Science of Computer Programming"}
  937.  
  938. MACRO {sicomp} {"SIAM Journal on Computing"}
  939.  
  940. MACRO {tocs} {"ACM Transactions on Computer Systems"}
  941.  
  942. MACRO {tods} {"ACM Transactions on Database Systems"}
  943.  
  944. MACRO {tog} {"ACM Transactions on Graphics"}
  945.  
  946. MACRO {toms} {"ACM Transactions on Mathematical Software"}
  947.  
  948. MACRO {toois} {"ACM Transactions on Office Information Systems"}
  949.  
  950. MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
  951.  
  952. MACRO {tcs} {"Theoretical Computer Science"}
  953.  
  954. READ
  955.  
  956. STRINGS { longest.label }
  957.  
  958. INTEGERS { number.label longest.label.width }
  959.  
  960. FUNCTION {initialize.longest.label}
  961. { "" 'longest.label :=
  962.   #1 'number.label :=
  963.   #0 'longest.label.width :=
  964. }
  965.  
  966. FUNCTION {longest.label.pass}
  967. { number.label int.to.str$ 'label :=
  968.   number.label #1 + 'number.label :=
  969.   label width$ longest.label.width >
  970.     { label 'longest.label :=
  971.       label width$ 'longest.label.width :=
  972.     }
  973.     'skip$
  974.   if$
  975. }
  976.  
  977. EXECUTE {initialize.longest.label}
  978.  
  979. ITERATE {longest.label.pass}
  980.  
  981. FUNCTION {begin.bib}
  982. { preamble$ empty$
  983.     'skip$
  984.     { preamble$ write$ newline$ }
  985.   if$
  986.   "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
  987. }
  988.  
  989. EXECUTE {begin.bib}
  990.  
  991. EXECUTE {init.state.consts}
  992.  
  993. ITERATE {call.type$}
  994.  
  995. FUNCTION {end.bib}
  996. { newline$
  997.   "\end{thebibliography}" write$ newline$
  998. }
  999.  
  1000. EXECUTE {end.bib}
  1001.  
  1002. %%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEE.bst %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1003.